package com.gep.controlador.manager.AcMovPecas;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.zkoss.zk.ui.Executions;
import org.zkoss.zul.Flashchart;
import org.zkoss.zul.ListModelList;
import org.zkoss.zul.Listbox;
import org.zkoss.zul.SimpleCategoryModel;
import org.zkoss.zul.Window;

import com.gep.dto.PecaDTO;

public class ControladorAcMovPecas extends Window {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public List<PecaDTO> listaPeca;

	public Flashchart grafico;

	public List<Object[]> dados;

	@SuppressWarnings("unchecked")
	public void carregarAcMovPecas() {
		listaPeca = new ArrayList<PecaDTO>();
		grafico = (Flashchart) this.getFellow("grafico");
		HttpServletRequest request = (HttpServletRequest) Executions
				.getCurrent().getNativeRequest();
		HttpSession session = request.getSession(false);
		dados = (List<Object[]>) session.getAttribute("dadosAcMovPecas");
		if (dados == null) {
			Executions.sendRedirect("/zul/home.zul");
		} else {
			this.carregarListaPeca();
			this.carregarGrafico();
		}

	}

	public void carregarListaPeca() {
		Listbox listbox = (Listbox) this.getFellow("listBox");
		for (Object[] object : dados) {
			PecaDTO dto;
			dto = (PecaDTO) object[0];
			dto.setQuantidadeTotalSolicitada(((Long)object[1]));
			listaPeca.add(dto);
		}
		ListModelList model = null;
		List items = listaPeca;
		if (model == null) {
			model = new ListModelList(items.size());
			listbox.setModel(model);
		}
		model.addAll(items);

		listbox.setVisible(true);
	}

	public void carregarGrafico() {
		SimpleCategoryModel demoModel = new SimpleCategoryModel();
		for (Object[] object : dados) {
			Long quantidade;
			PecaDTO dto;
			dto = (PecaDTO) object[0];
			quantidade = (Long) object[1];

			demoModel.setValue("" + dados.indexOf(object), dto.getNomePeca(),
					quantidade);
			listaPeca.add(dto);
		}
		grafico.setModel(demoModel);
	}
}
